package com.hzit.manager.service.impl;

import java.util.List;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.user.MyException;
import com.ruoyi.system.api.RemoteHzitUserService;
import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.Brand;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hzit.manager.mapper.BrandMapper;
import com.hzit.manager.service.IBrandService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 品牌管理Service业务层处理
 * 
 * @author hbxfwf
 * @date 2024-03-07
 */
@Service
public class BrandServiceImpl implements IBrandService 
{
    @Autowired
    private BrandMapper brandMapper;
    @Autowired
    private RemoteHzitUserService userService;
    /**
     * 查询品牌管理
     * 
     * @param id 品牌管理主键
     * @return 品牌管理
     */
    @Override
    public Brand selectBrandById(Long id)
    {
        return brandMapper.selectBrandById(id);
    }

    /**
     * 查询品牌管理列表
     * 
     * @param brand 品牌管理
     * @return 品牌管理
     */
    @Override
    public List<Brand> selectBrandList(Brand brand)
    {
        return brandMapper.selectBrandList(brand);
    }

    /**
     * 新增品牌管理
     * 
     * @param brand 品牌管理
     * @return 结果
     */
    @Override
    public int insertBrand(Brand brand)
    {
        return brandMapper.insertBrand(brand);
    }

    /**
     * 修改品牌管理
     * 
     * @param brand 品牌管理
     * @return 结果
     */
    @Override
    public int updateBrand(Brand brand)
    {
        return brandMapper.updateBrand(brand);
    }

    /**
     * 批量删除品牌管理
     * 
     * @param ids 需要删除的品牌管理主键
     * @return 结果
     */
    @Override
    public int deleteBrandByIds(Long[] ids)
    {
        return brandMapper.deleteBrandByIds(ids);
    }

    /**
     * 删除品牌管理信息
     * 
     * @param id 品牌管理主键
     * @return 结果
     */
    @Override
    public int deleteBrandById(Long id)
    {
        return brandMapper.deleteBrandById(id);
    }

    /**
     * 保存用户及品牌
     */
	@Override
    @GlobalTransactional            // 开启全局事务
    @Transactional                  // 注册一个分支事务
	public void saveUserAndBrand() {
		//1. 保存品牌
        Brand brand = new Brand();
        brand.setName("七匹狼");
        brand.setFirstChar("Q");
        this.insertBrand(brand);



        //2. 调用远程访问保存用户
        R r = userService.save();
        if(r.getCode() != 200){
            throw new MyException(r.getCode(),"进行远程调用时出异常了！");
        }

    }
}
